package A1_4;

import com.ctgu.A1_4.pays.Payment;
import com.ctgu.A1_4.pays.WireTransfer;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;

import static com.ctgu.A1_4.STATUS.CREATE;

public class main {
    public static void main(String[] args) {
        /**
         * 客户（Customer）具有四个属性：姓名(name)，联系电话(contact)，邮寄地址(deliveryAddress)和是否激活状态(active)，
         * 订单（Order）具有两个属性：创建日期（createDate），订单状态(status)包括CREATE、PAID、SHIPPING、DELIVERED、CANCEL五种状态；
         * 订单详情（OrderDetail）具有一个属性：数量（quantity），并具有calculateSubTotal（）、calculateWeight（）方法；
         * 商品项（Product）具有名称（title）、重量(weight)和描述（description），价格(price)，并具有getPriceForQuantity()方法和getWeight（）方法；
         * 支付方式（Payment），具有金额（amount）属性；
         * 支付方式支持以下五种支付方式：(继承Payment)
         *      信用卡Credit，具有卡号（number）、类型（type）和过期日期（expireDate）；
         *      现金（Cash），具有支付金额（cashTendered）属性；
         *      在线转账（WireTransfer），具有银行ID：bankID，银行名称bankName属性，
         *      支付宝（AliPay）具有卡号number属性；
         *      微信支付（WeixinPay），具有卡号属性。
         * 请根据以上简化的网上购物系统的关键类描述说明，创建类模型，并定义类之间的关系包括多重性（Multiplicity）。
         */
        // 创建客户对象
        Customer customer = new Customer("张三", "123456789", "中国", true);
        System.out.println(customer);
        //获取当前年月日,格式为 YYYY-MM-dd HH:mm:ss, 用于创建订单
        Order order = new Order(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()), CREATE);
        System.out.println(order);
        //创建商品列表
        ArrayList<Product> productList = new ArrayList<>(Arrays.asList(
                new Product("商品1", 1.0, "商品描述1", 10.0),
                new Product("商品2", 2.0, "商品描述2", 20.0),
                new Product("商品3", 3.0, "商品描述3", 30.0)
        ));
        System.out.println(productList);
        //创建订单详情列表
        ArrayList<OrderDetail> orderDetailList = new ArrayList<>(Arrays.asList(
                new OrderDetail(4, productList.get(0)),
                new OrderDetail(2, productList.get(1)),
                new OrderDetail(3,productList.get(2))
        ));
        System.out.println(orderDetailList);
        //支付方式
        Payment pay=new WireTransfer(100,"000001","中国银行");
        System.out.println(pay);
    }
}
